<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8" />
	<title>引出生命周期</title>
	<!-- 引入Vue -->
	<script type="text/javascript" src="../js/vue.js"></script>
</head>

<body>
	<!-- 
		生命周期：
			1.又名：生命周期回调函数、生命周期函数、生命周期钩子。
			2.是什么：Vue在关键时刻帮我们调用的一些特殊名称的函数。
			3.生命周期函数的名字不可更改，但函数的具体内容是程序员根据需求编写的。
			4.生命周期函数中的this指向是vm 或 组件实例对象。
		-->
	<!-- 准备好一个容器-->
	<div id="root">
		<h2 v-if="a">你好啊</h2>
		<!-- 欢迎学习Vue透明度切换 -->
		<h2 :style="{opacity}">欢迎学习Vue</h2>
	</div>
</body>
<script type="text/javascript">
	// 全局配置
	Vue.config.productionTip = false //阻止 vue 在启动时生成生产提示。

	// vue实例,一般不收到const vm
	new Vue({
		el: '#root',
		data: {
			a: false,
			opacity: 1
		},
		methods: {
			//方法2、时间函数实践
			// change(){
			// 	setInterval(() => {
			//  // this 指 vue实例
			// 	this.opacity -= 0.01 
			// 	if(this.opacity <= 0) this.opacity = 1
			// },16)	
			// }
		},
		//推荐方法3、Vue完成模板的解析并把初始的真实DOM元素放入页面后:（第一次挂载完毕）调用mounted
		mounted() {
			console.log('mounted', this)
			// 定时器,16毫秒,执行一次。=>箭头函数中this会往外找。
			setInterval(() => {
				this.opacity -= 0.01
				if (this.opacity <= 0) this.opacity = 1
			}, 16)
		},
	})

	//方法2、window方法调用
	// window.onload = () => {
	// 	vm.change()
	// }

	//方法1、通过外部的定时器实现（不推荐）
	// setInterval(() => {
	// 	vm.opacity -= 0.01
	// 	if(vm.opacity <= 0) vm.opacity = 1
	// },16) 
</script>

</html>